var CustomerQna = function() {
	customerQnaThis = this;
	//customerQna에서만 사용할 this함수
	customerQnaThis.qnaListCount = 1;
	//리스트 카운트 변수, "고정적"으로 1로 설정 json이 여러개면 배열로 오고 한개면 오브젝트로 오는것을 무조건 오브젝트로 받기 위해 데이터를 하나씩 받고 내부적으로 재귀함수 호출
	customerQnaThis.qnaCurrentPages = 0;
	//현재 몇번째 데이터인지 저장하는 변수
	customerQnaThis.qnaGetListCount = 10;
	//화면에 리스트를 몇개씩 뿌려줄지 결정하는 변수
	customerQnaThis.noticeCounter = 10;
	//리스트를 몇개씩 불러올지 결정한 후 더보기 버튼을 눌렀을 때 noticeGetListCount + noticeCounter 를 이용해서 한번더 10개를 불러올수 있게 하기 위한 변
	customerQnaThis.qnaJsonData = null;
	//json data를 저장하는 변수
	customerQnaThis.canRequestData = true;
	//더보기 버튼을 눌렀을때 리퀘스트를 두번 보내는 것을 방지하기 위한 BOOLEAN 변수
}

CustomerQna.prototype = {
	allRequestNotice : function() {
		//데이터 비교를 위해 전체 데이터를 요청하는 함수
		var mj = new MJson();
		var cm = new ConnectionManager();
		mj.putPub(MJson.PUB.SID, "QA001");
		mj.putPub(MJson.PUB.SERVICENAME, "getQnaList");
		mj.putPub(MJson.PUB.LISTCOUNT, customerQnaThis.qnaListCount);
		mj.putPub(MJson.PUB.CURRPAGENO, customerQnaThis.qnaCurrentPages);
		mj.putClient(MJson.CLIENT.USERID, document.globalObj.LOGIN_DATA.userId);
		cm.requestGet(mj.getJsonString(), function(jsonData) {
			if (mj.checkServiceResult(jsonData)) {
				console.log(':::::::::::::All Data:::::::::::::');
				console.log(JSON.stringify(jsonData));
				//처음 로드될때 서버에 데이터 요청
				customerQnaThis.requestNotice();
				//전체 데이터를 받고 화면에 뿌릴 데이터요청 함수 실행 (전체 데이터를 받지 않고 화면에 뿌릴 데이터를 요청하면 데이터가 꼬이는 문제 차후 해결)
			}
		}, function(e) {
			console.log('실패:통신');
		});
	},
	requestNotice : function() {
		//데이터를 한줄씩 요청하는 함수
		customerQnaThis.canRequestData = false;
		//데이터 요청이 진행되는 동안은 더보기 버튼을 누를수 없게 하기 위한 변수

		var mj = new MJson();
		var cm = new ConnectionManager();
		mj.putPub(MJson.PUB.SID, "QA001");
		mj.putPub(MJson.PUB.SERVICENAME, "getQnaList");
		mj.putPub(MJson.PUB.LISTCOUNT, customerQnaThis.qnaListCount);
		mj.putPub(MJson.PUB.CURRPAGENO, customerQnaThis.qnaCurrentPages);
		mj.putClient(MJson.CLIENT.USERID, document.globalObj.LOGIN_DATA.userId);

		cm.requestGet(mj.getJsonString(), function(jsonData) {
			if (mj.checkServiceResult(jsonData)) {
				console.log('성공::통신');
				console.log(JSON.stringify(jsonData));
				customerQnaThis.qnaJsonData = jsonData;

				if (customerQnaThis.qnaJsonData.msp.contents.items == undefined) {
					//----------------재귀함수 종료 시점----------------------------//
					//재귀 함수가 시작되고 더이상 뿌려줄 데이터가 없을때 재귀 함수를 종료
					console.log(':::::::::::::::::::::::재귀함수 종료::::::::::::::::::::::');

					//데이터가 없으므로 더보기 버튼을 안보이게 하고 해당 목록이 없음을 보여주기위한 li 태그 추가
					var itemNull = '<li class="no_list"><p>해당 목록이 없습니다.</p></li>';
					$("#qnaListTag").append(itemNull);
					$("#qnaListTag").listview('refresh');
					$("#moreQnaListBtn").hide();

					//재귀 함수를 통해 뿌려진 ui요소 링크 이벤트를 걸어주기 위한 listLoad 함수 호출
					customerQnaThis.onListLoad();
					return;
				}
				//----------------UI display 관련----------------------------//
				console.log("====현재" + customerQnaThis.qnaCurrentPages + "번째 셀 로드 됨====");
				var qnaType = customerQnaThis.qnaJsonData.msp.contents.items.qna__name;
				var qnaDetailType;
				var spanState;
				switch(customerQnaThis.qnaJsonData.msp.contents.items.qna__detail__type) {
					case "B":
						qnaDetailType = "부킹";
						break;

					case "C":
						qnaDetailType = "동호회";
						break;

					case "J":
						qnaDetailType = "조인룸";
						break;

					case "P":
						qnaDetailType = "결제";
						break;

					case "M":
						qnaDetailType = "회원";
						break;

					case "E":
					default :
						qnaDetailType = "기타";
						break;
				}
				if (customerQnaThis.qnaJsonData.msp.contents.items.status == "Y") {
					spanState = '<span class="state_ok">답변완료</span>';
				} else {
					spanState = '<span class="state_finish">문의접수</span>';
				}

				var qnaTitleText = customerQnaThis.qnaJsonData.msp.contents.items.title;
				var qnaTimeText = "";
				qnaTimeText = new String(customerQnaThis.qnaJsonData.msp.contents.items.reg__date);
				qnaTimeText = qnaTimeText.substr(0, 4) + "." + qnaTimeText.substr(4, 2) + "." + qnaTimeText.substr(6, 2);

				var liHead = '<li value="' + customerQnaThis.qnaJsonData.msp.contents.items.qna__seq + '"><a href="qna_view.html" data-transition="slide">';
				var qnaTypes = '<div class="part_S">' + qnaType + '<mark>' + qnaDetailType + '</mark></div>';
				var qnaTitles = '<div class="sub">' + qnaTitleText + '</div>';
				var timeTag = '<time>' + qnaTimeText + '</time>';
				var liFoot = '</a></li>';

				var cell = liHead + qnaTypes + qnaTitles + spanState + timeTag + liFoot;
				$("#qnaListTag").append(cell);
				$("#qnaListTag").listview('refresh');
				//----------------------------------------------------------//

				customerQnaThis.onListLoad();
				//재귀함수로 뿌려진 li들이 이벤트를 받게 할수 있게 함

				customerQnaThis.qnaCurrentPages++;
				//재귀함수 호출 전 customerQnaThis.qnaCurrentPages에 1을 더해줘서 다음번 데이터를 받기 위함
				if (customerQnaThis.qnaCurrentPages <= customerQnaThis.qnaGetListCount) {
					customerQnaThis.requestNotice();
				} else {
					console.log('화면 표시 종료 :: 화면에 ' + customerQnaThis.qnaCurrentPages + '개 출력');
					customerQnaThis.canRequestData = true;
					//더보기 버튼을 누를수 있게 함
				}
			}
		}, function(e) {
			console.log('실패:통신');
		});
	},

	onPageShow : function() {
		console.log(this);
		var qnaOnPageShowThis = this;
		qnaOnPageShowThis.allRequestNotice();
		//처음 로드될때 서버에 전체 데이터를 받음(확인용)

		//qnaOnPageShowThis.requestNotice();
		//처음 로드될때 서버에 데이터 요청

		customerQnaThis.qnaListCount = 1;
		//리스트 카운트 변수, "고정적"으로 1로 설정
		customerQnaThis.qnaCurrentPages = 1;
		//현재 몇번째 데이터인지 저장하는 변수, "변동적" 으로 현재 페이지를 저장
		customerQnaThis.qnaGetListCount = 10;
		//화면에 리스트를 몇개씩 뿌려줄지 결정하는 변수
		customerQnaThis.qnaJsonData = null;
		//json data를 저장하는 변수
		customerQnaThis.canRequestData = true;

		$("#moreQnaListBtn").bind('click', function(event) {
			if (customerQnaThis.canRequestData == true) {
				console.log("currentPage :: " + customerQnaThis.qnaCurrentPages + "ListCount :: " + customerQnaThis.qnaGetListCount);
				customerQnaThis.noticeGetListCount = customerQnaThis.noticeCounter + customerQnaThis.noticeGetListCount;
				customerQnaThis.requestNotice();
			}
			//더보기 버튼 클릭하면 서버에 데이터 요청
		});
		$("#goNotice_qna").bind('click', function(event) {
			$.mobile.changePage("notice.html");
		});
		$("#goCustomer_qna").bind('click', function(event) {
			$.mobile.changePage("customer.html");
		});
		$("#goQnaWrite_qna").bind('click', function(event) {
			$.mobile.changePage("qna_write.html");
		});
	},
	onListLoad : function() {
		//리스트가 로드되고 호출하여 동적으로 로드되는 리스트에 이벤트를 걸어주게 하기 위한 함수
		$("#qnaListTag").find("li").bind('click', function(event) {
			document.globalObj.QNA_DATA.qna_seq = event.currentTarget.value;
		});
	}
};
